package done.easy_501_600;

import org.junit.Test;

import static com.study.util.LogUtil.info;
import static com.study.util.SwapUtil.swap;

/**
 * 557. Reverse Words in a String III 反转字符串中的单词 III
 * <p>
 * 给定一个字符串，你需要反转字符串中每个单词的字符顺序，同时仍保留空格和单词的初始顺序。
 * <p>
 * 示例 1:
 * 输入:
 * "Let's take LeetCode contest"
 * 输出:
 * "s'teL ekat edoCteeL tsetnoc"
 * 注意：
 * 在字符串中，每个单词由单个空格分隔，并且字符串中不会有任何额外的空格。
 **/
@SuppressWarnings("all")
public class ReverseWordsInAStringIII {

    public String reverseWords(String s) {
        // 190414 first
        return null;
    }

    @Test
    public void test() {
        info(reverseWords("Let's take LeetCode contest"));
        info("s'teL ekat edoCteeL tsetnoc");
    }
}





























/*
public String reverseWords(String s) {
    // 对字符串进行空格补齐
    char[] chars = (s + " ").toCharArray();

    int i = 0;// 慢指针，互换元素的开始位置
    int j = 0;// 快指针
    int next; // 上一次停留的位置，也是互换元素的结束位置
    while (j < chars.length) {
        // 慢指针 i 不动, 让快指针 j 往后查找空格, 找到空格则为一个单词
        // 则反转单词, 需要注意临界条件最后一个单词没有空格, 或者对原始字符串补齐一个空格来解决
        if (chars[j] == ' ') {
            next = j - 1;

            // 反转字符串，做法是两个指针
            // 一个从前向后 另一个从后向前
            // i 和 next 之间的元素依次互换
            while (i < next)
                swap(chars, i++, next--);

            // i 直接移动到j的后面一位去
            i = j + 1;
        }
        j++;
    }
    // 记得去掉最后补齐的空格符
    return new String(chars).trim();
}
*/
